#ifndef __WINDOWS_PLATFORM_H__
#define __WINDOWS_PLATFORM_H__

#include "..\Config\fwPlatform.h"
#include "fwPlatformContext.h"
#include "fwESContext.h"

#if CURRENT_PLATFORM == PLATFORM_WIN32
#	include <Windows.h>

/// esCreateWindow flag - RGB color buffer
#	define ES_WINDOW_RGB           0
/// esCreateWindow flag - ALPHA color buffer
#	define ES_WINDOW_ALPHA         1 
/// esCreateWindow flag - depth buffer
#	define ES_WINDOW_DEPTH         2 
/// esCreateWindow flag - stencil buffer
#	define ES_WINDOW_STENCIL       4
/// esCreateWindow flat - multi-sample buffer
#	define ES_WINDOW_MULTISAMPLE   8
#endif

class _DLL_LIB_API Windows : public PlatformContext
{
private:
#if CURRENT_PLATFORM == PLATFORM_WIN32
	static Windows* m_pInstance;
protected:
	virtual bool CreateWindows() = 0;
	virtual bool CreateClientWindows() = 0;
	static LRESULT WinProc(HWND, UINT, WPARAM, LPARAM);

	/**
	* Cac xu ly khi gap su kien nhan phim
	*/
	virtual void KeyboardUpdate(WPARAM wParam, bool status) = 0;

	/**
	* Cac xu ly khi gap su khien chuot
	*/
	virtual void MouseUpdate() = 0;
#endif
protected:
	Windows();
public:
	virtual ~Windows();

	virtual void Destroy();
};

#endif